home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 1999 August / SGI Freeware 1999 August.iso / dist / fw_zsh.idb / usr / freeware / catman / u_man / cat1 / zshmisc.Z / zshmisc
Encoding:
Text File  |  1998-05-21  |  48.4 KB  |  991 lines

  1.  
  2.  
  3.  
  4.      ZZZZSSSSHHHHMMMMIIIISSSSCCCC((((1111))))          zzzzsssshhhh vvvveeeerrrrssssiiiioooonnnn 3333....0000 ((((JJJJuuuunnnneeee 22226666,,,,    1111999999996666))))        ZZZZSSSSHHHHMMMMIIIISSSSCCCC((((1111))))
  5.  
  6.  
  7.  
  8.      NNNNAAAAMMMMEEEE
  9.       zshmisc - Everything and then    some
  10.  
  11.      SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  12.       Everything I haven't put somewhere else
  13.  
  14.      SSSSHHHHEEEELLLLLLLL GGGGRRRRAAAAMMMMMMMMAAAARRRR
  15.       A _s_i_m_p_l_e _c_o_m_m_a_n_d is a    sequence of optional parameter
  16.       assignments followed by blank-separated words, with optional
  17.       redirections interspersed.  The first    word is    the command to
  18.       be executed, and the remaining words,    if any,    are arguments
  19.       to the command.  If a    command    name is    given, the parameter
  20.       assignments modify the environment of    the command when it is
  21.       executed.  The value of a simple command is its exit status,
  22.       or 128 plus the signal number    if terminated by a signal.
  23.  
  24.       A _p_i_p_e_l_i_n_e is    a sequence of one or more commands separated
  25.       by |||| or ||||&&&&.  ||||&&&& is shorthand for 2222>>>>&&&&1111    ||||.  The    standard
  26.       output of each command is connected to the standard input of
  27.       the next command in the pipeline.  If    a pipeline is preceded
  28.       by ccccoooopppprrrroooocccc, it    is executed as a coprocess; a two-way pipe is
  29.       established between it and the parent    shell.    The shell can
  30.       read from or write to    the coprocess by means of the >>>>&&&&pppp and
  31.       <<<<&&&&pppp redirection operators.  The value    of a pipeline is the
  32.       value    of the last command.  If a pipeline is preceded    by a
  33.       !!!!, the value of that pipeline    is the logical NOT of the
  34.       value    of the last command.
  35.  
  36.       A _s_u_b_l_i_s_t is a sequence of one or more pipelines separated
  37.       by &&&&&&&&    or ||||||||.    If two pipelines are separated by &&&&&&&&, the
  38.       second pipeline is executed only if the first    is successful
  39.       (returns a zero value).  If two pipelines are    separated by
  40.       ||||||||, the second is executed only if the first is unsuccessful
  41.       (returns a nonzero value).  Both operators have equal
  42.       precedence and are left associative.
  43.  
  44.       A _l_i_s_t is a sequence of zero or more sublists    separated by,
  45.       and optionally terminated by,    ;;;;, &&&&, &&&&||||, &&&&!!!! or    a newline.
  46.       Normally the shell waits for each list to finish before
  47.       executing the    next one.  If a    list is    terminated by &&&&, &&&&|||| or
  48.       &&&&!!!!, the shell    executes it in the background, and does    not
  49.       wait for it to finish.
  50.  
  51.      PPPPRRRREEEECCCCOOOOMMMMMMMMAAAANNNNDDDD    MMMMOOOODDDDIIIIFFFFIIIIEEEERRRRSSSS
  52.       A simple command may be preceded by a    _p_r_e_c_o_m_m_a_n_d modifier
  53.       which    will alter how the command is interpreted.  These
  54.       modifiers are    shell builtin commands with the    exception of
  55.       nnnnooooccccoooorrrrrrrreeeecccctttt which is a reserved    word.
  56.  
  57.       ----    The command is executed with a ----    prepended to its
  58.            aaaarrrrggggvvvv[[[[0000]]]] string.
  59.       nnnnoooogggglllloooobbbb
  60.  
  61.  
  62.  
  63.      Page 1                         (printed 4/24/98)
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.      ZZZZSSSSHHHHMMMMIIIISSSSCCCC((((1111))))          zzzzsssshhhh vvvveeeerrrrssssiiiioooonnnn 3333....0000 ((((JJJJuuuunnnneeee 22226666,,,,    1111999999996666))))        ZZZZSSSSHHHHMMMMIIIISSSSCCCC((((1111))))
  71.  
  72.  
  73.  
  74.            Filename    generation (globbing) is not performed on any
  75.            of the words.
  76.       nnnnooooccccoooorrrrrrrreeeecccctttt
  77.            Spelling    correction is not done on any of the words.
  78.       eeeexxxxeeeecccc The command is executed in the parent shell without
  79.            forking.
  80.       ccccoooommmmmmmmaaaannnndddd
  81.            The command word    is taken to be the name    of an external
  82.            command,    rather than a shell function or    builtin.
  83.  
  84.      CCCCOOOOMMMMPPPPLLLLEEEEXXXX CCCCOOOOMMMMMMMMAAAANNNNDDDDSSSS
  85.       A _c_o_m_p_l_e_x _c_o_m_m_a_n_d in zsh is one of the following:
  86.  
  87.       iiiiffff _l_i_s_t tttthhhheeeennnn _l_i_s_t [ eeeelllliiiiffff _l_i_s_t    tttthhhheeeennnn _l_i_s_t ] ...    [ eeeellllsssseeee _l_i_s_t ] ffffiiii
  88.            The iiiiffff _l_i_s_t is executed,    and, if    it returns a zero exit
  89.            status, the tttthhhheeeennnn    _l_i_s_t is    executed.  Otherwise, the eeeelllliiiiffff
  90.            _l_i_s_t is executed    and, if    its value is zero, the tttthhhheeeennnn
  91.            _l_i_s_t is executed.  If each eeeelllliiiiffff _l_i_s_t returns nonzero,
  92.            the eeeellllsssseeee    _l_i_s_t is    executed.
  93.  
  94.       ffffoooorrrr _n_a_m_e [ iiiinnnn    _w_o_r_d ... _t_e_r_m ]    ddddoooo _l_i_s_t    ddddoooonnnneeee
  95.            where _t_e_r_m is one ore more newline or ;;;;.     Expand    the
  96.            list of _w_o_r_ds, and set the parameter _n_a_m_e to each of
  97.            them in turn, executing _l_i_s_t each time.    If the iiiinnnn _w_o_r_d
  98.            is omitted, use the positional parameters instead of
  99.            the _w_o_r_ds.
  100.  
  101.       wwwwhhhhiiiilllleeee    _l_i_s_t ddddoooo    _l_i_s_t ddddoooonnnneeee
  102.            Execute the ddddoooo _l_i_s_t as long as the wwwwhhhhiiiilllleeee    _l_i_s_t returns a
  103.            zero exit status.
  104.  
  105.       uuuunnnnttttiiiillll    _l_i_s_t ddddoooo    _l_i_s_t ddddoooonnnneeee
  106.            Execute the ddddoooo _l_i_s_t as long as uuuunnnnttttiiiillll _l_i_s_t returns a
  107.            nonzero exit status.
  108.  
  109.       rrrreeeeppppeeeeaaaatttt _w_o_r_d ddddoooo _l_i_s_t ddddoooonnnneeee
  110.            _w_o_r_d is expanded    and treated as an arithmetic
  111.            expression, which must evaluate to a number _n.  _l_i_s_t is
  112.            then executed nnnn times.
  113.  
  114.       ccccaaaasssseeee _w_o_r_d iiiinnnn [ [((((] _p_a_t_t_e_r_n [ |||| _p_a_t_t_e_r_n ] ... )))) _l_i_s_t ;;;;;;;; ] ... eeeessssaaaacccc
  115.            Execute the _l_i_s_t    associated with    the first _p_a_t_t_e_r_n that
  116.            matches _w_o_r_d, if    any.  The form of the patterns is the
  117.            same as that used for filename generation.  See
  118.            _F_i_l_e_n_a_m_e    _G_e_n_e_r_a_t_i_o_n below.
  119.  
  120.       sssseeeelllleeeecccctttt _n_a_m_e [    iiiinnnn _w_o_r_d    ... _t_e_r_m ] ddddoooo _l_i_s_t ddddoooonnnneeee
  121.            where _t_e_r_m is one ore more newline or ;;;;.     Print the set
  122.            of _w_o_r_ds, each preceded by a number.  If    the iiiinnnn _w_o_r_d is
  123.            omitted,    use the    positional parameters.    The PPPPRRRROOOOMMMMPPPPTTTT3333
  124.            prompt is printed and a line is read from standard
  125.            input.  If this line consists of    the number of one of
  126.  
  127.  
  128.  
  129.      Page 2                         (printed 4/24/98)
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.      ZZZZSSSSHHHHMMMMIIIISSSSCCCC((((1111))))          zzzzsssshhhh vvvveeeerrrrssssiiiioooonnnn 3333....0000 ((((JJJJuuuunnnneeee 22226666,,,,    1111999999996666))))        ZZZZSSSSHHHHMMMMIIIISSSSCCCC((((1111))))
  137.  
  138.  
  139.  
  140.            the listed _w_o_r_ds, then the parameter _n_a_m_e is set    to the
  141.            _w_o_r_d corresponding to this number.  If this line    is
  142.            empty, the selection list is printed again.  Otherwise,
  143.            the value of the    parameter _n_a_m_e is set to null.    The
  144.            contents    of the line read from standard input is    saved
  145.            in the parameter    RRRREEEEPPPPLLLLYYYY.    _l_i_s_t is    executed for each
  146.            selection until a break or end-of-file is encountered.
  147.  
  148.       (((( _l_i_s_t ))))
  149.            Execute _l_i_s_t in a subshell.  Traps set by the ttttrrrraaaapppp
  150.            builtin are reset to their default values while
  151.            executing _l_i_s_t.
  152.  
  153.       {{{{ _l_i_s_t }}}}
  154.            Execute _l_i_s_t.
  155.  
  156.       ffffuuuunnnnccccttttiiiioooonnnn _w_o_r_d    ... [ (((()))) ] [ _t_e_r_m ] {{{{ _l_i_s_t }}}}
  157.       _w_o_r_d ... (((()))) [    _t_e_r_m ] {{{{ _l_i_s_t }}}}
  158.       _w_o_r_d ... (((()))) [    _t_e_r_m ] _c_o_m_m_a_n_d
  159.            where _t_e_r_m is one ore more newline or ;;;;.     Define    a
  160.            function    which is referenced by any one of _w_o_r_d.
  161.            Normally, only one _w_o_r_d is provided; multiple _w_o_r_ds are
  162.            usually only useful for setting traps.  The body    of the
  163.            function    is the _l_i_s_t between the    {{{{ and }}}}. See FFFFUUUUNNNNCCCCTTTTIIIIOOOONNNNSSSS
  164.            below.
  165.  
  166.       ttttiiiimmmmeeee [ _p_i_p_e_l_i_n_e ]
  167.            The _p_i_p_e_l_i_n_e is executed, and timing statistics are
  168.            reported    on the standard    error in the form specified by
  169.            the TTTTIIIIMMMMEEEEFFFFMMMMTTTT parameter.  If _p_i_p_e_l_i_n_e is omitted, print
  170.            statistics about    the shell process and its children.
  171.  
  172.       [[[[[[[[ _e_x_p ]]]]]]]]
  173.            Evaluates the conditional expression _e_x_p    and return a
  174.            zero exit status    if it is true.    See CCCCoooonnnnddddiiiittttiiiioooonnnnaaaallll
  175.            EEEExxxxpppprrrreeeessssssssiiiioooonnnnssss below for a description of _e_x_p.
  176.  
  177.      AAAALLLLTTTTEEEERRRRNNNNAAAATTTTEEEE FFFFOOOORRRRMMMMSSSS FFFFOOOORRRR CCCCOOOOMMMMPPPPLLLLEEEEXXXX CCCCOOOOMMMMMMMMAAAANNNNDDDDSSSS
  178.       Many of zsh's    complex    commands have alternate    forms.    These
  179.       particular versions of complex commands should be considered
  180.       deprecated and may be    removed    in the future.    The versions
  181.       in the previous section should be preferred instead.    The
  182.       short    versions below only work if _s_u_b_l_i_s_t is of the form {{{{
  183.       _l_i_s_t }}}} or if the NNNNOOOO____SSSSHHHHOOOORRRRTTTT____LLLLOOOOOOOOPPPPSSSS option is not    set.
  184.  
  185.       iiiiffff _l_i_s_t {{{{ _l_i_s_t }}}} [ eeeelllliiiiffff _l_i_s_t {{{{ _l_i_s_t }}}}    ] ... [    eeeellllsssseeee {{{{ _l_i_s_t }}}} ]
  186.            An alternate form of iiiiffff.
  187.  
  188.       iiiiffff _l_i_s_t _s_u_b_l_i_s_t
  189.            A short form of previous    one.
  190.  
  191.       ffffoooorrrr _n_a_m_e (((( _w_o_r_d ... ))))    _s_u_b_l_i_s_t
  192.  
  193.  
  194.  
  195.      Page 3                         (printed 4/24/98)
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.      ZZZZSSSSHHHHMMMMIIIISSSSCCCC((((1111))))          zzzzsssshhhh vvvveeeerrrrssssiiiioooonnnn 3333....0000 ((((JJJJuuuunnnneeee 22226666,,,,    1111999999996666))))        ZZZZSSSSHHHHMMMMIIIISSSSCCCC((((1111))))
  203.  
  204.  
  205.  
  206.            A short form of ffffoooorrrr.
  207.  
  208.       ffffoooorrrr _n_a_m_e [ iiiinnnn    _w_o_r_d ... _t_e_r_m ]    _s_u_b_l_i_s_t
  209.            where _t_e_r_m is one ore more newline or ;;;;.     Another short
  210.            form of ffffoooorrrr.
  211.  
  212.       ffffoooorrrreeeeaaaacccchhhh _n_a_m_e (((( _w_o_r_d ... )))) _l_i_s_t eeeennnndddd
  213.            Another form of ffffoooorrrr.
  214.  
  215.       wwwwhhhhiiiilllleeee    _l_i_s_t {{{{ _l_i_s_t }}}}
  216.            An alternative form of wwwwhhhhiiiilllleeee.
  217.  
  218.       uuuunnnnttttiiiillll    _l_i_s_t {{{{ _l_i_s_t }}}}
  219.            An alternative form of uuuunnnnttttiiiillll.
  220.  
  221.       rrrreeeeppppeeeeaaaatttt _w_o_r_d _s_u_b_l_i_s_t
  222.            This is a short form of rrrreeeeppppeeeeaaaatttt.
  223.  
  224.       ccccaaaasssseeee _w_o_r_d {{{{ [    [((((] _p_a_t_t_e_r_n [ ||||    _p_a_t_t_e_r_n    ] ... ))))    _l_i_s_t ;;;;;;;;    ] ... }}}}
  225.            An alternative form of ccccaaaasssseeee.
  226.  
  227.       sssseeeelllleeeecccctttt _n_a_m_e [    iiiinnnn _w_o_r_d    _t_e_r_m ] _s_u_b_l_i_s_t
  228.            where _t_e_r_m is one ore more newline or ;;;;.     A short form
  229.            of sssseeeelllleeeecccctttt.
  230.  
  231.      RRRREEEESSSSEEEERRRRVVVVEEEEDDDD WWWWOOOORRRRDDDDSSSS
  232.       The following    words are recognized as    reserved words when
  233.       used as the first word of a command unless quoted or
  234.       disabled using ddddiiiissssaaaabbbblllleeee ----rrrr:
  235.  
  236.            ddddoooo ddddoooonnnneeee eeeessssaaaacccc tttthhhheeeennnn eeeelllliiiiffff eeeellllsssseeee ffffiiii ffffoooorrrr ccccaaaasssseeee iiiiffff wwwwhhhhiiiilllleeee
  237.            ffffuuuunnnnccccttttiiiioooonnnn    rrrreeeeppppeeeeaaaatttt ttttiiiimmmmeeee uuuunnnnttttiiiillll sssseeeelllleeeecccctttt ccccoooopppprrrroooocccc    nnnnooooccccoooorrrrrrrreeeecccctttt
  238.            ffffoooorrrreeeeaaaacccchhhh eeeennnndddd !!!! [[[[[[[[    {{{{ }}}}
  239.  
  240.            Additionally }}}} is recognized in any position if the
  241.            IIIIGGGGNNNNOOOORRRREEEE____BBBBRRRRAAAACCCCEEEESSSS option is not set.
  242.  
  243.      CCCCOOOOMMMMMMMMEEEENNNNTTTTSSSS
  244.       In noninteractive shells, or in interactive shells with the
  245.       IIIINNNNTTTTEEEERRRRAAAACCCCTTTTIIIIVVVVEEEE____CCCCOOOOMMMMMMMMEEEENNNNTTTTSSSS option set, a word beginning with the
  246.       third    character of the hhhhiiiissssttttcccchhhhaaaarrrrssss parameter (`#' by default)
  247.       causes that word and all the following characters up to a
  248.       newline to be    ignored.
  249.  
  250.      AAAALLLLIIIIAAAASSSSIIIINNNNGGGG
  251.       Every    token in the shell input is checked to see if there is
  252.       an alias defined for it.  If so, it is replaced by the text
  253.       of the alias if it is    in command position (if    it could be
  254.       the first word of a simple command), or if the alias is
  255.       global.  If the text ends with a space, the next word    in the
  256.       shell    input is treated as though it were in command position
  257.       for purposes of alias    expansion.  An alias is    defined    using
  258.  
  259.  
  260.  
  261.      Page 4                         (printed 4/24/98)
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.      ZZZZSSSSHHHHMMMMIIIISSSSCCCC((((1111))))          zzzzsssshhhh vvvveeeerrrrssssiiiioooonnnn 3333....0000 ((((JJJJuuuunnnneeee 22226666,,,,    1111999999996666))))        ZZZZSSSSHHHHMMMMIIIISSSSCCCC((((1111))))
  269.  
  270.  
  271.  
  272.       the aaaalllliiiiaaaassss builtin; global aliases may    be defined using the
  273.       -gggg option to that builtin.
  274.  
  275.       Alias    substitution is    done on    the shell input    before any
  276.       other    substitution except history substitution.  Therefore,
  277.       if an    alias is defined for the word ffffoooooooo, alias substitution
  278.       may be avoided by quoting part of the    word, e.g. \\\\ffffoooooooo.  But
  279.       there    is nothing to prevent an alias being defined for \\\\ffffoooooooo
  280.       as well.
  281.  
  282.      QQQQUUUUOOOOTTTTIIIINNNNGGGG
  283.       A character may be _q_u_o_t_e_d (that is, made to stand for
  284.       itself) by preceding it with a \.  \ followed    by a newline
  285.       is ignored.  All characters enclosed between a pair of
  286.       single quotes    ('') are quoted. A single quote    cannot appear
  287.       within single    quotes.     Inside    double quotes (""), parameter
  288.       and command substitution occurs, and \ quotes    the characters
  289.       \, `,    ", and $.
  290.  
  291.      RRRREEEEDDDDIIIIRRRREEEECCCCTTTTIIIIOOOONNNN
  292.       Before a command is executed,    its input and output may be
  293.       redirected.  The following may appear    anywhere in a simple
  294.       command or may precede or follow a complex command.
  295.       Substitution occurs before _w_o_r_d or _d_i_g_i_t is used except as
  296.       noted    below.    If the result of substitution on _w_o_r_d produces
  297.       more than one    filename, redirection occurs for each separate
  298.       filename in turn.
  299.  
  300.       <<<<_w_o_r_d
  301.            Open file _w_o_r_d as standard input.
  302.  
  303.       <<<<>>>>_w_o_r_d
  304.            Open file _w_o_r_d for reading and writing as standard
  305.            input.  If the file does    not exist then it is created.
  306.  
  307.       >>>>_w_o_r_d
  308.            Open file _w_o_r_d as standard output.  If the file does
  309.            not exist then it is created.  If the file exists, and
  310.            the CCCCLLLLOOOOBBBBBBBBEEEERRRR option is unset, this causes    an error;
  311.            otherwise, it is    truncated to zero length.
  312.  
  313.       >>>>|||| _w_o_r_d
  314.       >>>>!!!! _w_o_r_d
  315.            Same as >>>>, except that the file is truncated to zero
  316.            length if it exists, even if CCCCLLLLOOOOBBBBBBBBEEEERRRR is unset.
  317.  
  318.       >>>>>>>>_w_o_r_d
  319.            Open file _w_o_r_d as standard output.  If the file exists
  320.            then output is appended to it.  If the file does    not
  321.            exist, and the CCCCLLLLOOOOBBBBBBBBEEEERRRR option is    unset, this causes an
  322.            error; otherwise, the file is created.
  323.  
  324.  
  325.  
  326.  
  327.      Page 5                         (printed 4/24/98)
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.      ZZZZSSSSHHHHMMMMIIIISSSSCCCC((((1111))))          zzzzsssshhhh vvvveeeerrrrssssiiiioooonnnn 3333....0000 ((((JJJJuuuunnnneeee 22226666,,,,    1111999999996666))))        ZZZZSSSSHHHHMMMMIIIISSSSCCCC((((1111))))
  335.  
  336.  
  337.  
  338.       >>>>>>>>|||| _w_o_r_d
  339.       >>>>>>>>!!!! _w_o_r_d
  340.            Same as >>>>>>>>, except that the file    is created if it does
  341.            not exist, even if CCCCLLLLOOOOBBBBBBBBEEEERRRR is unset.
  342.  
  343.       <<<<<<<<[-]    _w_o_r_d
  344.            The shell input is read up to a line that is the    same
  345.            as _w_o_r_d,    or to an end-of-file.  No parameter
  346.            substitution, command substitution or filename
  347.            generation is performed on _w_o_r_d.     The resulting
  348.            document, called    a _h_e_r_e-_d_o_c_u_m_e_n_t, becomes the standard
  349.            input.  If any character    of _w_o_r_d    is quoted with single
  350.            or double quotes    or a \,    no interpretation is placed
  351.            upon the    characters of the document.  Otherwise,
  352.            parameter and command substitution occurs, \ followed
  353.            by a newline is removed,    and \ must be used to quote
  354.            the characters \, $, `, and the first character of
  355.            _w_o_r_d.  If <<- is    used, then all leading tabs are
  356.            stripped    from _w_o_r_d and from the document.
  357.  
  358.       <<<<<<<<<<<<_w_o_r_d
  359.            Perform shell expansion on _w_o_r_d and pass    the result to
  360.            standard    input.
  361.  
  362.       <<<<&&&&_d_i_g_i_t
  363.            The standard input is duplicated    from file descriptor
  364.            _d_i_g_i_t (see _d_u_p(2)).  Similarly for standard output
  365.            using >>>>&&&&_d_i_g_i_t....
  366.  
  367.       >>>>&&&&_w_o_r_d
  368.            Same as >>>>_w_o_r_d 2222>>>>&&&&1.
  369.  
  370.       >>>>>>>>&&&&_w_o_r_d
  371.            Same as >>>>>>>>_w_o_r_d 2222>>>>&&&&1.
  372.  
  373.       <<<<&&&&----  Close the standard input.
  374.  
  375.       >>>>&&&&----  Close the standard output.
  376.  
  377.       <<<<&&&&pppp  The input from the coprocess is moved to    the standard
  378.            input.
  379.  
  380.       >>>>&&&&pppp  The output to the coprocess is moved to the standard
  381.            output.
  382.  
  383.       If one of the    above is preceded by a digit, then the file
  384.       descriptor referred to is that specified by the digit
  385.       (instead of the default 0 or 1).  The    order in which
  386.       redirections are specified is    significant.  The shell
  387.       evaluates each redirection in    terms of the (_f_i_l_e _d_e_s_c_r_i_p_t_o_r,
  388.       _f_i_l_e)    association at the time    of evaluation.    For example:
  389.  
  390.  
  391.  
  392.  
  393.      Page 6                         (printed 4/24/98)
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.      ZZZZSSSSHHHHMMMMIIIISSSSCCCC((((1111))))          zzzzsssshhhh vvvveeeerrrrssssiiiioooonnnn 3333....0000 ((((JJJJuuuunnnneeee 22226666,,,,    1111999999996666))))        ZZZZSSSSHHHHMMMMIIIISSSSCCCC((((1111))))
  401.  
  402.  
  403.  
  404.            ... 1>_f_n_a_m_e 2>&1
  405.  
  406.       first    associates file    descriptor 1 with file _f_n_a_m_e.  It then
  407.       associates file descriptor 2 with the    file associated    with
  408.       file descriptor 1 (that is, _f_n_a_m_e).  If the order of
  409.       redirections were reversed, file descriptor 2    would be
  410.       associated with the terminal (assuming file descriptor 1 had
  411.       been)    and then file descriptor 1 would be associated with
  412.       file _f_n_a_m_e.
  413.  
  414.       If the user tries to open a file descriptor for writing more
  415.       than once, the shell opens the file descriptor as a pipe to
  416.       a process that copies    its input to all the specified
  417.       outputs, similar to tee(1), provided the MMMMUUUULLLLTTTTIIIIOOOOSSSS option is
  418.       set.    Thus:
  419.  
  420.            ddddaaaatttteeee >>>>ffffoooooooo >>>>bbbbaaaarrrr
  421.  
  422.       writes the date to two files,    named "foo" and    "bar".    Note
  423.       that a pipe is an implicit indirection; thus
  424.  
  425.            ddddaaaatttteeee >>>>ffffoooooooo |||| ccccaaaatttt
  426.  
  427.       writes the date to the file "foo", and also pipes it to cat.
  428.  
  429.       If the MMMMUUUULLLLTTTTIIIIOOOOSSSS option    is set,    the word after a redirection
  430.       operator is also subjected to    filename generation
  431.       (globbing).  Thus
  432.  
  433.            :::: >>>> ****
  434.  
  435.       will truncate    all files in the current directory, assuming
  436.       there's at least one.     (Without the MMMMUUUULLLLTTTTIIIIOOOOSSSS option, it would
  437.       create an empty file called "*".)
  438.  
  439.       If the user tries to open a file descriptor for reading more
  440.       than once, the shell opens the file descriptor as a pipe to
  441.       a process that copies    all the    specified inputs to its    output
  442.       in the order specified, similar to cat(1), provided the
  443.       MMMMUUUULLLLTTTTIIIIOOOOSSSS option is set.  Thus
  444.  
  445.            ssssoooorrrrtttt <<<<ffffoooooooo <<<<ffffuuuubbbbaaaarrrr
  446.  
  447.       or even
  448.  
  449.            ssssoooorrrrtttt <<<<ffff{{{{oooooooo,,,,uuuubbbbaaaarrrr}}}}
  450.  
  451.       is equivalent    to "cat    foo fubar | sort".  Similarly, you can
  452.       do
  453.  
  454.            eeeecccchhhhoooo eeeexxxxiiiitttt 0000 >>>>>>>> ****....sssshhhh
  455.  
  456.  
  457.  
  458.  
  459.      Page 7                         (printed 4/24/98)
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.      ZZZZSSSSHHHHMMMMIIIISSSSCCCC((((1111))))          zzzzsssshhhh vvvveeeerrrrssssiiiioooonnnn 3333....0000 ((((JJJJuuuunnnneeee 22226666,,,,    1111999999996666))))        ZZZZSSSSHHHHMMMMIIIISSSSCCCC((((1111))))
  467.  
  468.  
  469.  
  470.       Note that a pipe is in implicit indirection; thus
  471.  
  472.            ccccaaaatttt bbbbaaaarrrr |||| ssssoooorrrrtttt <<<<ffffoooooooo
  473.  
  474.       is equivalent    to "cat    bar foo    | sort"    (note the order    of the
  475.       inputs).
  476.  
  477.       If the MMMMUUUULLLLTTTTIIIIOOOOSSSS option    is _u_nset, each redirection replaces
  478.       the previous redirection for that file descriptor.  However,
  479.       all files redirected to are actually opened, so
  480.  
  481.            eeeecccchhhhoooo ffffoooooooo    >>>> bbbbaaaarrrr >>>>    bbbbaaaazzzz
  482.  
  483.       when MMMMUUUULLLLTTTTIIIIOOOOSSSS is unset    will truncate bar, and write "foo"
  484.       into baz.
  485.  
  486.       If a simple command consists of one or more redirection
  487.       operators and    zero or    more parameter assignments, but    no
  488.       command name,    the command ccccaaaatttt    is assumed.  Thus
  489.  
  490.            <<<< ffffiiiilllleeee
  491.  
  492.       prints the contents of ffffiiiilllleeee.
  493.  
  494.       If a command is followed by &&&&    and job    control    is not active,
  495.       then the default standard input for the command is the empty
  496.       file ////ddddeeeevvvv////nnnnuuuullllllll.  Otherwise, the environment for the
  497.       execution of a command contains the file descriptors of the
  498.       invoking shell as modified by    input/output specifications.
  499.  
  500.      CCCCOOOOMMMMMMMMAAAANNNNDDDD EEEEXXXXEEEECCCCUUUUTTTTIIIIOOOONNNN
  501.       If a command name contains no    slashes, the shell attempts to
  502.       locate it.  If there exists a    shell function by that name,
  503.       the function is invoked as described below in    FFFFUUUUNNNNCCCCTTTTIIIIOOOONNNNSSSS.  If
  504.       there    exists a shell builtin by that name, the builtin is
  505.       invoked.
  506.  
  507.       Otherwise, the shell searches    each element of    ppppaaaatttthhhh for a
  508.       directory containing an executable file by that name.     If
  509.       the search is    unsuccessful, the shell    prints an error
  510.       message and returns a    nonzero    exit status.
  511.  
  512.       If execution fails because the file is not in    executable
  513.       format, and the file is not a    directory, it is assumed to be
  514.       a shell script.  /bin/sh is spawned to execute it.  If the
  515.       program is a file beginning with ####!!!!, the remainder of    the
  516.       first    line specifies an interpreter for the program.    The
  517.       shell    will execute the specified interpreter on operating
  518.       systems that do not handle this executable format in the
  519.       kernel.
  520.  
  521.      FFFFUUUUNNNNCCCCTTTTIIIIOOOONNNNSSSS
  522.  
  523.  
  524.  
  525.      PPPPaaaaggggeeee 8888                         ((((pppprrrriiiinnnntttteeeedddd 4444////22224444////99998888))))
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.      ZZZZSSSSHHHHMMMMIIIISSSSCCCC((((1111))))          zzzzsssshhhh vvvveeeerrrrssssiiiioooonnnn 3333....0000 ((((JJJJuuuunnnneeee 22226666,,,,    1111999999996666))))        ZZZZSSSSHHHHMMMMIIIISSSSCCCC((((1111))))
  533.  
  534.  
  535.  
  536.       The ffffuuuunnnnccccttttiiiioooonnnn reserved    word is    used to    define shell
  537.       functions.  Shell functions are read in and stored
  538.       internally.  Alias names are resolved    when the function is
  539.       read.     Functions are executed    like commands with the
  540.       arguments passed as positional parameters.  (See _E_x_e_c_u_t_i_o_n
  541.       below).
  542.  
  543.       Functions execute in the same    process    as the caller and
  544.       share    all files and present working directory    with the
  545.       caller.  A trap on EEEEXXXXIIIITTTT set inside a function    is executed
  546.       after    the function completes in the environment of the
  547.       caller.
  548.  
  549.       The rrrreeeettttuuuurrrrnnnn builtin is    used to    return from function calls.
  550.  
  551.       Function identifiers can be listed with the ffffuuuunnnnccccttttiiiioooonnnnssss
  552.       builtin.  Functions can be undefined with the    uuuunnnnffffuuuunnnnccccttttiiiioooonnnn
  553.       builtin.
  554.  
  555.       The following    functions, if defined, have special meaning to
  556.       the shell:
  557.  
  558.       cccchhhhppppwwwwdddd
  559.            Executed    whenever the current working directory is
  560.            changed.
  561.       pppprrrreeeeccccmmmmdddd
  562.            Executed    before each prompt.
  563.       ppppeeeerrrriiiiooooddddiiiicccc
  564.            If the parameter    PPPPEEEERRRRIIIIOOOODDDD is set, this function is
  565.            executed    every PPPPEEEERRRRIIIIOOOODDDD seconds, just before a prompt.
  566.       TTTTRRRRAAAAPPPPxxxxxxxxxxxx
  567.            If defined and non-null,    this function will be executed
  568.            whenever    the shell catches a signal SSSSIIIIGGGGxxxxxxxxxxxx, where xxxxxxxxxxxx
  569.            is a signal name    as specified for the kkkkiiiillllllll builtin (see
  570.            below).    The signal number will be passed as the    first
  571.            parameter to the    function.  In addition,    TTTTRRRRAAAAPPPPZZZZEEEERRRRRRRR is
  572.            executed    whenever a command has a non-zero exit status,
  573.            TTTTRRRRAAAAPPPPDDDDEEEEBBBBUUUUGGGG is executed after each    command, and TTTTRRRRAAAAPPPPEEEEXXXXIIIITTTT
  574.            is executed when    the shell exits, or when the current
  575.            function    exits if defined inside    a function.  If    a
  576.            function    of this    form is    defined    and null, the shell
  577.            and processes spawned by    it will    ignore SSSSIIIIGGGGxxxxxxxxxxxx.
  578.  
  579.      JJJJOOOOBBBBSSSS
  580.       If the MMMMOOOONNNNIIIITTTTOOOORRRR option    is set,    an interactive shell
  581.       associates a _j_o_b with    each pipeline.    It keeps a table of
  582.       current jobs,    printed    by the jjjjoooobbbbssss command, and assigns them
  583.       small    integer    numbers.  When a job is    started    asynchronously
  584.       with &&&&, the shell prints a line which    looks like:
  585.  
  586.            [1] 1234
  587.  
  588.  
  589.  
  590.  
  591.      Page 9                         (printed 4/24/98)
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.      ZZZZSSSSHHHHMMMMIIIISSSSCCCC((((1111))))          zzzzsssshhhh vvvveeeerrrrssssiiiioooonnnn 3333....0000 ((((JJJJuuuunnnneeee 22226666,,,,    1111999999996666))))        ZZZZSSSSHHHHMMMMIIIISSSSCCCC((((1111))))
  599.  
  600.  
  601.  
  602.       indicating that the job which    was started asynchronously was
  603.       job number 1 and had one (top-level) process,    whose process
  604.       id was 1234.
  605.  
  606.       If a job is started with &&&&|||| or &&&&!!!!, then that job is
  607.       immediately disowned.     After startup,    it does    not have a
  608.       place    in the job table, and is not subject to    the job
  609.       control features described here.
  610.  
  611.       If you are running a job and wish to do something else you
  612.       may hit the key ^^^^ZZZZ (control-Z) which sends a TSTP signal to
  613.       the current job.  The    shell will then    normally indicate that
  614.       the job has been `suspended',    and print another prompt.  You
  615.       can then manipulate the state    of this    job, putting it    in the
  616.       background with the bbbbgggg command, or run some other commands
  617.       and then eventually bring the    job back into the foreground
  618.       with the foreground command ffffgggg.  A ^^^^ZZZZ    takes effect
  619.       immediately and is like an interrupt in that pending output
  620.       and unread input are discarded when it is typed.
  621.  
  622.       A job    being run in the background will suspend if it tries
  623.       to read from the terminal.  Background jobs are normally
  624.       allowed to produce output, but this can be disabled by
  625.       giving the command ``stty tostop''.  If you set this tty
  626.       option, then background jobs will suspend when they try to
  627.       produce output like they do when they    try to read input.
  628.  
  629.       There    are several ways to refer to jobs in the shell.     A job
  630.       can be referred to by    the process id of any process of the
  631.       job or by one    of the following:
  632.       %%%%_n_u_m_b_e_r
  633.            The job with the    given number.
  634.       %%%%_s_t_r_i_n_g
  635.            Any job whose command line begins with _s_t_r_i_n_g.
  636.       %%%%????_s_t_r_i_n_g
  637.            Any job whose command line contains _s_t_r_i_n_g.
  638.       %%%%%%%%   Current job.
  639.       %%%%++++   Equivalent to %%%%%%%%.
  640.       %%%%----   Previous    job.
  641.  
  642.       The shell learns immediately whenever    a process changes
  643.       state.  It normally informs you whenever a job becomes
  644.       blocked so that no further progress is possible.  If nnnnoooottttiiiiffffyyyy
  645.       is not set, it waits until just before it prints a prompt
  646.       before it informs you.
  647.  
  648.       When the monitor mode    is on, each background job that
  649.       completes triggers any trap set for CCCCHHHHLLLLDDDD.
  650.  
  651.       When you try to leave    the shell while    jobs are running or
  652.       suspended, you will be warned    that `You have suspended
  653.       (running) jobs.'  You    may use    the jjjjoooobbbbssss command to see    what
  654.  
  655.  
  656.  
  657.      Page 10                         (printed 4/24/98)
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.      ZZZZSSSSHHHHMMMMIIIISSSSCCCC((((1111))))          zzzzsssshhhh vvvveeeerrrrssssiiiioooonnnn 3333....0000 ((((JJJJuuuunnnneeee 22226666,,,,    1111999999996666))))        ZZZZSSSSHHHHMMMMIIIISSSSCCCC((((1111))))
  665.  
  666.  
  667.  
  668.       they are.  If    you do this or immediately try to exit again,
  669.       the shell will not warn you a    second time; the suspended
  670.       jobs will be terminated, and the running jobs    will be    sent a
  671.       SSSSIIIIGGGGHHHHUUUUPPPP signal.  To avoid having the shell terminate the
  672.       running jobs,    either use the nnnnoooohhhhuuuupppp(1)    command    or the ddddiiiissssoooowwwwnnnn
  673.       builtin (see below).
  674.  
  675.      SSSSIIIIGGGGNNNNAAAALLLLSSSS
  676.       The INT and QUIT signals for an invoked command are ignored
  677.       if the command is followed by    &&&& and the job MMMMOOOONNNNIIIITTTTOOOORRRR option
  678.       is not active.  Otherwise, signals have the values inherited
  679.       by the shell from its    parent (but see    the TTTTRRRRAAAAPPPPxxxxxxxxxxxx special
  680.       function above).
  681.  
  682.      AAAARRRRIIIITTTTHHHHMMMMEEEETTTTIIIICCCC    EEEEVVVVAAAALLLLUUUUAAAATTTTIIIIOOOONNNN
  683.       An ability to    perform    integer    arithmetic is provided with
  684.       the builtin lllleeeetttt.  Evaluations    are performed using _l_o_n_g
  685.       arithmetic. A    leading    _0_x or _0_X denotes hexadecimal.
  686.       Otherwise, numbers are of the    form [_b_a_s_e####]_n where _b_a_s_e is a
  687.       decimal number between two and thirty-six representing the
  688.       arithmetic base and _n    is a number in that base (for example,
  689.       `16#ff' is 255 in hexadecimal).  If _b_a_s_e is omitted then
  690.       base 10 is used.  For    backwards compatibility    the form
  691.       `[16]ff' is also accepted.
  692.  
  693.       An arithmetic    expression uses    nearly the same    syntax,
  694.       precedence, and associativity    of expressions in C.  The
  695.       following operators are supported (listed in decreasing
  696.       order    of precedence):
  697.  
  698.            ++++ ---- !!!!   ++++++++ --------
  699.             u~~~~nary plus/minus, logical NOT, complement,
  700.             {pre,post}{in,de}crement
  701.            <<<<<<<< >>>>>>>>
  702.             bitwise shift left,    right
  703.            &&&&    bitwise AND
  704.            ^^^^    bitwise XOR
  705.            ||||    bitwise OR
  706.            ********   exponentiation
  707.            **** //// %%%%
  708.             multiplication, division, modulus (remainder)
  709.            ++++ ----  addition, subtraction
  710.            <<<< >>>> <<<<==== >>>>====
  711.             comparison
  712.            ======== !!!!====
  713.             equality and inequality
  714.            &&&&&&&&   logical AND
  715.            |||||||| ^^^^^^^^
  716.             logical OR,    XOR
  717.            ???? ::::  ternary operator
  718.            ==== ++++==== ----==== ****==== ////==== %%%%====    &&&&==== ^^^^==== ||||==== <<<<<<<<==== >>>>>>>>==== &&&&&&&&==== ||||||||==== ^^^^^^^^==== ********====
  719.             assignment
  720.  
  721.  
  722.  
  723.      Page 11                         (printed 4/24/98)
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.      ZZZZSSSSHHHHMMMMIIIISSSSCCCC((((1111))))          zzzzsssshhhh vvvveeeerrrrssssiiiioooonnnn 3333....0000 ((((JJJJuuuunnnneeee 22226666,,,,    1111999999996666))))        ZZZZSSSSHHHHMMMMIIIISSSSCCCC((((1111))))
  731.  
  732.  
  733.  
  734.            ,,,,    comma operator
  735.  
  736.       The operators    &&, ||,    &&=, and ||= are short-circuiting, and
  737.       only one of the latter two expressions in a ternary operator
  738.       is evaluated.     Note the precedence of    the bitwise AND, OR,
  739.       and XOR operators.
  740.  
  741.       An expression    of the form ####\\\\xxxx    where xxxx    is any character gives
  742.       the ascii value of this character and    an expression of the
  743.       form ####ffffoooooooo gives the ascii value of the first character of
  744.       the value of the parameter ffffoooooooo.
  745.  
  746.       Named    parameters and subscripted arrays can be referenced by
  747.       name within an arithmetic expression without using the
  748.       parameter substitution syntax.
  749.  
  750.       An internal integer representation of    a named    parameter can
  751.       be specified with the    iiiinnnntttteeeeggggeeeerrrr    builtin.  Arithmetic
  752.       evaluation is    performed on the value of each assignment to a
  753.       named    parameter declared integer in this manner.
  754.  
  755.       Since    many of    the arithmetic operators require quoting, an
  756.       alternative form of the lllleeeetttt command is provided.  For    any
  757.       command which    begins with a ((((((((, all the characters until a
  758.       matching )))))))) are treated as a quoted expression.  More
  759.       precisely, ((((((((...))))))))  is equivalent to lllleeeetttt """"..."""".
  760.  
  761.      CCCCOOOONNNNDDDDIIIITTTTIIIIOOOONNNNAAAALLLL EEEEXXXXPPPPRRRREEEESSSSSSSSIIIIOOOONNNNSSSS
  762.       A _c_o_n_d_i_t_i_o_n_a_l    _e_x_p_r_e_s_s_i_o_n is used with    the [[[[[[[[ compound
  763.       command to test attributes of    files and to compare strings.
  764.       Each expression can be constructed from one or more of the
  765.       following unary or binary expressions:
  766.       ----aaaa _f_i_l_e
  767.            true if _f_i_l_e exists.
  768.       ----bbbb _f_i_l_e
  769.            true if _f_i_l_e exists and is a block special file.
  770.       ----cccc _f_i_l_e
  771.            true if _f_i_l_e exists and is a character special file.
  772.       ----dddd _f_i_l_e
  773.            true if _f_i_l_e exists and is a directory.
  774.       ----eeee _f_i_l_e
  775.            true if _f_i_l_e exists.
  776.       ----ffff _f_i_l_e
  777.            true if _f_i_l_e exists and is an ordinary file.
  778.       ----gggg _f_i_l_e
  779.            true if _f_i_l_e exists and has its setgid bit set.
  780.       ----hhhh _f_i_l_e
  781.            true if _f_i_l_e exists and is a symbolic link.
  782.       ----kkkk _f_i_l_e
  783.            true if _f_i_l_e exists and has its sticky bit set.
  784.       ----nnnn _s_t_r_i_n_g
  785.            true if length of _s_t_r_i_n_g    is non-zero.
  786.  
  787.  
  788.  
  789.      Page 12                         (printed 4/24/98)
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.      ZZZZSSSSHHHHMMMMIIIISSSSCCCC((((1111))))          zzzzsssshhhh vvvveeeerrrrssssiiiioooonnnn 3333....0000 ((((JJJJuuuunnnneeee 22226666,,,,    1111999999996666))))        ZZZZSSSSHHHHMMMMIIIISSSSCCCC((((1111))))
  797.  
  798.  
  799.  
  800.       ----oooo _o_p_t_i_o_n
  801.            true if option named _o_p_t_i_o_n is on.  _o_p_t_i_o_n may be a
  802.            single character, in which case it is a single letter
  803.            option name.  (See the SSSSPPPPEEEECCCCIIIIFFFFYYYYIIIINNNNGGGG OOOOPPPPTTTTIIIIOOOONNNNSSSS section of
  804.            the _z_s_h_o_p_t_i_o_n_s(1) man page.)
  805.       ----pppp _f_i_l_e
  806.            true if _f_i_l_e exists and is a fifo special file or a
  807.            pipe.
  808.       ----rrrr _f_i_l_e
  809.            true if _f_i_l_e exists and is readable by current process.
  810.       ----ssss _f_i_l_e
  811.            true if _f_i_l_e exists and has size    greater    than zero.
  812.       ----tttt _f_d
  813.            true if file descriptor number _f_d is open and
  814.            associated with a terminal device.  (note: _f_d is    not
  815.            optional)
  816.       ----uuuu _f_i_l_e
  817.            true if _f_i_l_e exists and has its setuid bit set.
  818.       ----wwww _f_i_l_e
  819.            true if _f_i_l_e exists and is writable by current process.
  820.       ----xxxx _f_i_l_e
  821.            true if _f_i_l_e exists and is executable by    current
  822.            process.     If _f_i_l_e exists    and is a directory, then the
  823.            current process has permission to search    in the
  824.            directory.
  825.       ----zzzz _s_t_r_i_n_g
  826.            true if length of _s_t_r_i_n_g    is zero.
  827.       ----LLLL _f_i_l_e
  828.            true if _f_i_l_e exists and is a symbolic link.
  829.       ----OOOO _f_i_l_e
  830.            true if _f_i_l_e exists and is owned    by the effective user
  831.            id of this process.
  832.       ----GGGG _f_i_l_e
  833.            true if _f_i_l_e exists and its group matches the effective
  834.            group id    of this    process.
  835.       ----SSSS _f_i_l_e
  836.            true if _f_i_l_e exists and is a socket.
  837.       ----NNNN _f_i_l_e
  838.            true if _f_i_l_e exists and its access time is not newer
  839.            than its    modification time.
  840.       _f_i_l_e_1    ----nnnntttt _f_i_l_e_2
  841.            true if _f_i_l_e_1 exists and    is newer than _f_i_l_e_2.
  842.       _f_i_l_e_1    ----ooootttt _f_i_l_e_2
  843.            true if _f_i_l_e_1 exists and    is older than _f_i_l_e_2.
  844.       _f_i_l_e_1    ----eeeeffff _f_i_l_e_2
  845.            true if _f_i_l_e_1 and _f_i_l_e_2 exist and refer to the same
  846.            file.
  847.       _s_t_r_i_n_g ======== _p_a_t_t_e_r_n
  848.       _s_t_r_i_n_g ==== _p_a_t_t_e_r_n
  849.            true if _s_t_r_i_n_g matches _p_a_t_t_e_r_n.    The first form is the
  850.            preferred one.  The other form is for backward
  851.            compatibility and should    be considered obsolete.
  852.  
  853.  
  854.  
  855.      Page 13                         (printed 4/24/98)
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862.      ZZZZSSSSHHHHMMMMIIIISSSSCCCC((((1111))))          zzzzsssshhhh vvvveeeerrrrssssiiiioooonnnn 3333....0000 ((((JJJJuuuunnnneeee 22226666,,,,    1111999999996666))))        ZZZZSSSSHHHHMMMMIIIISSSSCCCC((((1111))))
  863.  
  864.  
  865.  
  866.       _s_t_r_i_n_g !!!!==== _p_a_t_t_e_r_n
  867.            true if _s_t_r_i_n_g does not match _p_a_t_t_e_r_n.
  868.       _s_t_r_i_n_g_1 <<<< _s_t_r_i_n_g_2
  869.            true if _s_t_r_i_n_g_1 comes before _s_t_r_i_n_g_2 based on ASCII
  870.            value of    their characters.
  871.       _s_t_r_i_n_g_1 >>>> _s_t_r_i_n_g_2
  872.            true if _s_t_r_i_n_g_1 comes after _s_t_r_i_n_g_2 based on ASCII
  873.            value of    their characters.
  874.       _e_x_p_1 ----eeeeqqqq _e_x_p_2
  875.            true if _e_x_p_1 is equal to    _e_x_p_2.
  876.       _e_x_p_1 ----nnnneeee _e_x_p_2
  877.            true if _e_x_p_1 is not equal to _e_x_p_2.
  878.       _e_x_p_1 ----lllltttt _e_x_p_2
  879.            true if _e_x_p_1 is less than _e_x_p_2.
  880.       _e_x_p_1 ----ggggtttt _e_x_p_2
  881.            true if _e_x_p_1 is greater than _e_x_p_2.
  882.       _e_x_p_1 ----lllleeee _e_x_p_2
  883.            true if _e_x_p_1 is less than or equal to _e_x_p_2.
  884.       _e_x_p_1 ----ggggeeee _e_x_p_2
  885.            true if _e_x_p_1 is greater than or equal to    _e_x_p_2.
  886.       (((( _e_x_p    ))))
  887.            true if _e_x_p is true.
  888.       !!!! _e_x_p
  889.            true if _e_x_p is false.
  890.       _e_x_p_1 &&&&&&&& _e_x_p_2
  891.            true if _e_x_p_1 and    _e_x_p_2 are both true.
  892.       _e_x_p_1 |||||||| _e_x_p_2
  893.            true if either _e_x_p_1 or _e_x_p_2 is true.
  894.  
  895.       In each of the above expressions, if _f_i_l_e is of the form
  896.       ////ddddeeeevvvv////ffffdddd////_n, where _n is    an integer, then the test applied to
  897.       the open file    whose descriptor number    is _n, even if the
  898.       underlying system does not support the ////ddddeeeevvvv////ffffdddd directory.
  899.  
  900.  
  901.      CCCCOOOOMMMMPPPPAAAATTTTIIIIBBBBIIIILLLLIIIITTTTYYYY
  902.       _Z_s_h tries to emulate _s_h or _k_s_h when it is invoked as _s_h or
  903.       _k_s_h respectively.  In    this mode the following    parameters are
  904.       not special and not initialized by the shell:     AAAARRRRGGGGCCCC, aaaarrrrggggvvvv,
  905.       ccccddddppppaaaatttthhhh, ffffiiiiggggnnnnoooorrrreeee, ffffppppaaaatttthhhh, HHHHIIIISSSSTTTTCCCCHHHHAAAARRRRSSSS, mmmmaaaaiiiillllppppaaaatttthhhh, MMMMAAAANNNNPPPPAAAATTTTHHHH,
  906.       mmmmaaaannnnppppaaaatttthhhh, ppppaaaatttthhhh, pppprrrroooommmmpppptttt, PPPPRRRROOOOMMMMPPPPTTTT, PPPPRRRROOOOMMMMPPPPTTTT2222, PPPPRRRROOOOMMMMPPPPTTTT3333, PPPPRRRROOOOMMMMPPPPTTTT4444,
  907.       ppppssssvvvvaaaarrrr, ssssttttaaaattttuuuussss, wwwwaaaattttcccchhhh.
  908.  
  909.       The usual _z_s_h    starup/shutdown    scripts    are not    executed.
  910.       Login    shells source ////eeeettttcccc////pppprrrrooooffffiiiilllleeee followed by $$$$HHHHOOOOMMMMEEEE////....pppprrrrooooffffiiiilllleeee.
  911.       If the EEEENNNNVVVV environment variable is set on invocation,    $$$$EEEENNNNVVVV
  912.       is sourced after the profile scripts.     The value of EEEENNNNVVVV is
  913.       subjected to parameter expansion, command substitution, and
  914.       arithmetic expansion before being interpreted    as a pathname.
  915.       Note that the    PPPPRRRRIIIIVVVVIIIILLLLEEEEGGGGEEEEDDDD option also affects the execution
  916.       of startup files.  See _z_s_h_o_p_t_i_o_n_s(%manext%) for more
  917.       details.
  918.  
  919.  
  920.  
  921.      Page 14                         (printed 4/24/98)
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.      ZZZZSSSSHHHHMMMMIIIISSSSCCCC((((1111))))          zzzzsssshhhh vvvveeeerrrrssssiiiioooonnnn 3333....0000 ((((JJJJuuuunnnneeee 22226666,,,,    1111999999996666))))        ZZZZSSSSHHHHMMMMIIIISSSSCCCC((((1111))))
  929.  
  930.  
  931.  
  932.       The following    options    are set    if the shell is    invoked    as _s_h
  933.       or _k_s_h:  NNNNOOOO____BBBBAAAADDDD____PPPPAAAATTTTTTTTEEEERRRRNNNN, NNNNOOOO____BBBBAAAANNNNGGGG____HHHHIIIISSSSTTTT, NNNNOOOO____BBBBGGGG____NNNNIIIICCCCEEEE,
  934.       NNNNOOOO____EEEEQQQQUUUUAAAALLLLSSSS, NNNNOOOO____FFFFUUUUNNNNCCCCTTTTIIIIOOOONNNN____AAAARRRRGGGGZZZZEEEERRRROOOO, GGGGLLLLOOOOBBBB____SSSSUUUUBBBBSSSSTTTT, NNNNOOOO____HHHHUUUUPPPP,
  935.       IIIINNNNTTTTEEEERRRRAAAACCCCTTTTIIIIVVVVEEEE____CCCCOOOOMMMMMMMMEEEENNNNTTTTSSSS,    KKKKSSSSHHHH____AAAARRRRRRRRAAAAYYYYSSSS, NNNNOOOO____MMMMUUUULLLLTTTTIIIIOOOOSSSS,    NNNNOOOO____NNNNOOOOMMMMAAAATTTTCCCCHHHH,
  936.       RRRRMMMM____SSSSTTTTAAAARRRR____SSSSIIIILLLLEEEENNNNTTTT, PPPPOOOOSSSSIIIIXXXX____BBBBUUUUIIIILLLLTTTTIIIINNNNSSSS, SSSSHHHH____FFFFIIIILLLLEEEE____EEEEXXXXPPPPAAAANNNNSSSSIIIIOOOONNNN, SSSSHHHH____GGGGLLLLOOOOBBBB,
  937.       SSSSHHHH____OOOOPPPPTTTTIIIIOOOONNNN____LLLLEEEETTTTTTTTEEEERRRRSSSS, SSSSHHHH____WWWWOOOORRRRDDDD____SSSSPPPPLLLLIIIITTTT.  Additionally the BBBBSSSSDDDD____EEEECCCCHHHHOOOO
  938.       and the IIIIGGGGNNNNOOOORRRREEEE____BBBBRRRRAAAACCCCEEEESSSS    options    are set    if _z_s_h is invoked as
  939.       _s_h and the KKKKSSSSHHHH____OOOOPPPPTTTTIIIIOOOONNNN____PPPPRRRRIIIINNNNTTTT, LLLLOOOOCCCCAAAALLLL____OOOOPPPPTTTTIIIIOOOONNNNSSSS, PPPPRRRROOOOMMMMPPPPTTTT____SSSSUUUUBBBBSSSSTTTT and
  940.       SSSSIIIINNNNGGGGLLLLEEEE____LLLLIIIINNNNEEEE____ZZZZLLLLEEEE options are set if _z_s_h is invoked as _k_s_h.
  941.  
  942.  
  943.  
  944.  
  945.  
  946.  
  947.  
  948.  
  949.  
  950.  
  951.  
  952.  
  953.  
  954.  
  955.  
  956.  
  957.  
  958.  
  959.  
  960.  
  961.  
  962.  
  963.  
  964.  
  965.  
  966.  
  967.  
  968.  
  969.  
  970.  
  971.  
  972.  
  973.  
  974.  
  975.  
  976.  
  977.  
  978.  
  979.  
  980.  
  981.  
  982.  
  983.  
  984.  
  985.  
  986.  
  987.      Page 15                         (printed 4/24/98)
  988.  
  989.  
  990.  
  991.